package red.social;

import java.io.DataInputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.URL;
import java.net.URLConnection;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class Inicio extends Activity {
    
    Bundle parametros;
    String ip;   

    String nomUsuario;
    String estadoUsuario;
    int idUser;
    ListView lv;
    
	Fila[] comments;
	Fila[] solicitudesA;
	Fila[] solicitudesG;
	
	Integer [] idComm;
	//Integer [] idSolAmis;
	SolicitudAmistadPK [] idSolAmis;
	Integer [] idSolGrup;	
	ListView lstComent;
	ListView lstSolAmis;
	ListView lstSolGrup;
	Bitmap imagen;
	Context context;
	
	InputStream in;	        
	ObjectInputStream dos;
    URLConnection conn;
    
    static String tipoSolicitud;
    String servletURL;
        
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inicio);
        context = this.getApplicationContext();
        ip =  getResources().getString(R.string.ip);
        servletURL = "http://"+ip+ ":8080/Modulo10-war/ServletInicio";
        
        lv = (ListView) this.findViewById(R.id.listaComentarios);
        
        Bundle extras = getIntent().getExtras();
        if(extras !=null)
        {
        idUser = extras.getInt("idUsuario");
        }                   	
        
		try {
			
			URL ob = new URL(servletURL + "?idUs="+String.valueOf(idUser));
			conn = ob.openConnection();
			conn.setDoInput(true);
	        conn.setDoOutput(true);
	        in= conn.getInputStream();	        
	        dos = new ObjectInputStream(in);
	        	       	      
	        nomUsuario = (String)dos.readObject();
	        Log.i("Inicio","Nombre recibido: "+nomUsuario);
	        
			TextView nombre= (TextView) this.findViewById(R.id.nombreUsuario);
			nombre.setText(nomUsuario);
			
			estadoUsuario = (String)dos.readObject();
			TextView estado= (TextView) this.findViewById(R.id.textEstado);
			estado.setText(estadoUsuario);
			
			byte[] bImagen = (byte[]) dos.readObject();
			ImageView foto = (ImageView)findViewById(R.id.imageView1);
			foto.setImageBitmap(BitmapFactory.decodeByteArray(bImagen, 0, bImagen.length));
			
			int numComentarios = dos.readInt();
			
			comments = new Fila[numComentarios];
			idComm = new Integer[numComentarios];
			byte[] bimagen;
			
			for (int i = 0;i < Integer.valueOf(numComentarios);i++) {				
				int idComent=dos.readInt();				
				Log.i("Inicio","ID Comentario "+idComent);
				idComm[i] = idComent;				
				String usuario = (String)dos.readObject();
				String coment = (String)dos.readObject();				
				
				bimagen = (byte[])dos.readObject();
				imagen = BitmapFactory.decodeByteArray(bimagen, 0, bimagen.length);
				comments[i] = new Fila(usuario+":\n"+coment, imagen, context);								
			}
			Adaptador adaptador = new Adaptador (this);
			lstComent = (ListView)findViewById(R.id.listaComentarios);			
			lstComent.setAdapter(adaptador);
						
			
			
			  //leemos el numero de solicitudes de amistad
			   final int num_sol_amis=dos.readInt();
			   Button button_SolAmis=(Button)findViewById(R.id.Num_sol_amistad);
			   button_SolAmis.setText(String.valueOf(num_sol_amis));
			   
			   solicitudesA = new Fila[num_sol_amis];
			   idSolAmis = new SolicitudAmistadPK[num_sol_amis];
			   Bitmap imagenSA;
			   
			   for (int i = 0;i < num_sol_amis; i++) {														    
				    int idus1=dos.readInt();
				    int idus2=dos.readInt();				    
				    idSolAmis[i] = new SolicitudAmistadPK();				    	    
				    idSolAmis[i].setIdusuario1(idus1);  
				    idSolAmis[i].setIdusuario2(idus2);				    
				    
				    String remitente=(String)dos.readObject();					
					String contenido=(String)dos.readObject();
					Log.i("Inicio","Remitente: "+remitente);
					Log.i("Inicio","Contenido: "+contenido);
					bimagen = (byte[])dos.readObject();
					imagenSA = BitmapFactory.decodeByteArray(bimagen, 0, bimagen.length);
					solicitudesA[i] = new Fila(remitente+":\n"+contenido, imagenSA, context);																							
				}
		   			   

			  //leemos el numero de solicitudes de grupo
			   int num_sol_grup=dos.readInt();
			   Button button_SolGrup=(Button)findViewById(R.id.Num_sol_grupo);
			   button_SolGrup.setText(String.valueOf(num_sol_grup));
			   
			   solicitudesG = new Fila[num_sol_grup];
			   idSolGrup = new Integer[num_sol_grup];
			   
			   
			   for (int i = 0;i < num_sol_grup; i++) {														    
				    int idgrupo=dos.readInt();				    				    				    				  				    
				    String nombreG= (String)dos.readObject();					
					String comentarioG= (String)dos.readObject();
					Log.i("Inicio","IDgrupo: "+idgrupo+"nombreG: "+nombreG+"comentarioG: "+comentarioG);
					idSolGrup[i]=idgrupo;
					Bitmap imagenSG = BitmapFactory.decodeResource(this.getResources(), R.drawable.amigos);
					solicitudesG[i] = new Fila(nombreG+":\n"+comentarioG, imagenSG , context);																							
				}
			   
			   
			 //leemos el numero de mensajes no leidos
			   int num_mensajes=dos.readInt();
			   
			   Button button_Comentarios=(Button)findViewById(R.id.NumComentarios);
			   button_Comentarios.setText(String.valueOf(numComentarios));
			   
			   button_SolAmis.setOnClickListener(new OnClickListener() {
	   	        	
				    public void onClick(View vista) {				        					    	
				    	Toast.makeText(getBaseContext(), "Solicitudes de amistad... ", Toast.LENGTH_SHORT).show();
				    	tipoSolicitud="Amistad";
						Adapsol adaptador = new Adapsol(getParent());
						lstComent = (ListView)findViewById(R.id.listaComentarios);						
						lstComent.setAdapter(adaptador);	
				    }
				});
			   
			   //listener para solicitudes de grupo
			   button_SolGrup.setOnClickListener(new OnClickListener() {
	   	        	
				    public void onClick(View vista) {				        					    	
				    	Toast.makeText(getBaseContext(), "Solicitudes de grupo... ", Toast.LENGTH_SHORT).show();
				    	tipoSolicitud="Grupo";
						AdapsolG adaptadorSol = new AdapsolG(getParent());
						lstComent = (ListView)findViewById(R.id.listaComentarios);						
						lstComent.setAdapter(adaptadorSol);				    	
				    }
				});
			   
			  
			   button_Comentarios.setOnClickListener(new OnClickListener() {
	   	        	
				    public void onClick(View vista) {
				    	
				    	Adaptador adaptador = new Adaptador (getParent());
						lstComent = (ListView)findViewById(R.id.listaComentarios);			
						lstComent.setAdapter(adaptador);
				    				    	
				    }
				});
			   
			   Button changeState =(Button)findViewById(R.id.button_ChangeState);			   			  
			   changeState.setOnClickListener(new OnClickListener() {
	   	        	
				    public void onClick(View vista) {
				    	EditText state =(EditText)findViewById(R.id.estadoUsuario);
					    String text_estado=state.getText().toString();
				    	
				    	
				    	try {
							URL ob3 = new URL(servletURL + "?NuevoEstado="+text_estado);
							URLConnection conn3 = ob3.openConnection();
							Log.i("Inicio","Mandando nuesto estado:"+text_estado);
							conn3.setDoInput(true);
					        conn3.setDoOutput(true);
					        InputStream in3= conn3.getInputStream();	        
					       		        			        
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}		    	
				        Intent i=new Intent(context,Main.class);
				        i.putExtra("idUsuario", idUser);
					    startActivity(i);
				    				    	
				    }
				});
			   
			   Button posicion = (Button)findViewById(R.id.posicion);
			   posicion.setOnClickListener(new OnClickListener() {
	   	        	
				    public void onClick(View vista) {
				    	 Intent i=new Intent(context,ActualizarMiPosicion.class);
					        i.putExtra("idUsuario", idUser);
						    startActivity(i);
				    				    	
				    }
				});
			
		}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
    }

//Adaptador para lista de comentarios    
class Adaptador extends ArrayAdapter {
    	
    	Activity context;
    	
    	Adaptador(Activity context) {
    		super(context, R.layout.comentario, comments);
    		this.context = context;
    	}
    	
    	public View getView(final int position, View convertView, ViewGroup parent) 
    	{
			View item = convertView;
			ViewHolder holder;
			try {
    		if(item == null)
    		{
    			
    			LayoutInflater inflater = context.getLayoutInflater();
    			item = inflater.inflate(R.layout.comentario, null);
    			
    			holder = new ViewHolder();
    			holder.foto = (ImageView)item.findViewById(R.id.ComentFoto);
    			holder.info = (TextView)item.findViewById(R.id.ComentUser);
    			    			    		
    			item.setTag(holder);    			    				    			
    			
    		}
    		else
    		{
    			holder = (ViewHolder)item.getTag();
    		}
			
		
			holder.info.setText(comments[position].getInfo());
			holder.foto.setImageBitmap(comments[position].getbitmap());
			Button boton = (Button)item.findViewById(R.id.ComentEliminar);
			boton.setOnClickListener(new OnClickListener() {
   	        	
			    public void onClick(View v) {
			    	
			    	String id = String.valueOf(idComm[position]);
			    	Toast.makeText(getBaseContext(), "El id del comentario es: "+id, Toast.LENGTH_SHORT).show();
			    	
			    	
					try {		
						URL ob2 = new URL(servletURL + "?idComent="+id);
						URLConnection conn2 = ob2.openConnection();
						conn2.setDoInput(true);
				        conn2.setDoOutput(true);
				        InputStream in2= conn2.getInputStream();	        
				        DataInputStream dos2 = new DataInputStream(in2);
				        //in2.close();
				        //dos2.close();
				        
				        
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
			    	
			        Intent i=new Intent(context,Main.class);
			        i.putExtra("idUsuario", idUser);
				    startActivity(i);
				    

			    }
			});
			
			
			} catch (Exception e){
				e.printStackTrace();
			}
			return(item);
		}
    }
    

//Adaptador para solicitudes de Amistad
class Adapsol extends ArrayAdapter {
	
	Activity context;	
	Adapsol(Activity context) {
		super(context, R.layout.solicitud, solicitudesA);
		this.context = context;
	}
	
	public View getView(final int position, View convertView, ViewGroup parent) 
	{
		View item = convertView;
		ViewHolder holder2;
		try {
		if(item == null)
		{			
			LayoutInflater inflater = context.getLayoutInflater();
			item = inflater.inflate(R.layout.solicitud, null);
			
			holder2 = new ViewHolder();
			holder2.foto = (ImageView)item.findViewById(R.id.SolicitudFoto);
			holder2.info = (TextView)item.findViewById(R.id.SolicitudUser);			    			    		
			item.setTag(holder2);    			    				    						
		}
		else
		{ 	holder2 = (ViewHolder)item.getTag();
		}
		
	
		holder2.info.setText(solicitudesA[position].getInfo());
		holder2.foto.setImageBitmap(solicitudesA[position].getbitmap());
		Button boton = (Button)item.findViewById(R.id.SolicitudAceptar);
		boton.setOnClickListener(new OnClickListener() {
	        	
		    public void onClick(View v) {
		    	
		    	//String id = String.valueOf(solicitudesA[position]);
		    	Toast.makeText(getBaseContext(), "aceptando... ", Toast.LENGTH_SHORT).show();
		    	
		    	try {					
					URL ob2 = new URL(servletURL + "?Acepta_SolAmis1="+idSolAmis[position].getIdusuario1()+"&"+"Acepta_SolAmis2="+idSolAmis[position].getIdusuario2());
					URLConnection conn2 = ob2.openConnection();
					conn2.setDoInput(true);
			        conn2.setDoOutput(true);
			        InputStream in2= conn2.getInputStream();	        
			        DataInputStream dos2 = new DataInputStream(in2);
			        //in2.close();
			        //dos2.close();			        			        
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}		    	
		        Intent i=new Intent(context,Main.class);
		        i.putExtra("idUsuario", idUser);
			    startActivity(i);
		    }
		});

		Button botonR = (Button)item.findViewById(R.id.SolicitudRechazar);
		botonR.setOnClickListener(new OnClickListener() {
        	
		    public void onClick(View v) {
		    	
		    	//String id = String.valueOf(solicitudesA[position]);
		    	Toast.makeText(getBaseContext(), "eliminando... ", Toast.LENGTH_SHORT).show();
		    	
		    	try {					
					URL ob2 = new URL(servletURL + "?Rechaza_SolAmis1="+idSolAmis[position].getIdusuario1()+"&"+"Rechaza_SolAmis2="+idSolAmis[position].getIdusuario2());
					URLConnection conn2 = ob2.openConnection();
					conn2.setDoInput(true);
			        conn2.setDoOutput(true);
			        InputStream in2= conn2.getInputStream();	        
			        DataInputStream dos2 = new DataInputStream(in2);
			        //in2.close();
			        //dos2.close();			        			        
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}		    	
		        Intent i=new Intent(context,Main.class);
		        i.putExtra("idUsuario", idUser);
			    startActivity(i);
		    }
		});
		
		} catch (Exception e){
			e.printStackTrace();
		}
		return(item);
	}
}


//Adaptador para solicitudes de Amistad
class AdapsolG extends ArrayAdapter {
	
	Activity context;	
	AdapsolG(Activity context) {
		super(context, R.layout.solicitud, solicitudesG);
		this.context = context;
	}
	
	public View getView(final int position, View convertView, ViewGroup parent) 
	{
		View item = convertView;
		ViewHolder holder2;
		try {
		if(item == null)
		{			
			LayoutInflater inflater = context.getLayoutInflater();
			item = inflater.inflate(R.layout.solicitud, null);
			
			holder2 = new ViewHolder();
			holder2.foto = (ImageView)item.findViewById(R.id.SolicitudFoto);
			holder2.info = (TextView)item.findViewById(R.id.SolicitudUser);										    			    
			item.setTag(holder2);    			    				    						
		}
		else
		{ 	holder2 = (ViewHolder)item.getTag();
		}
		
		holder2.info.setText(solicitudesG[position].getInfo());
		holder2.foto.setImageBitmap(solicitudesG[position].getbitmap());
		
		Button boton = (Button)item.findViewById(R.id.SolicitudAceptar);
		boton.setOnClickListener(new OnClickListener() {
	        	
		    public void onClick(View v) {
		    	
		    	//String id = String.valueOf(solicitudesA[position]);
		    	Toast.makeText(getBaseContext(), "aceptando grupo... ", Toast.LENGTH_SHORT).show();
		    	
		    	try {
					URL ob2 = new URL(servletURL + "?Acepta_SolGrupo="+idSolGrup[position]);
					URLConnection conn2 = ob2.openConnection();
					conn2.setDoInput(true);
			        conn2.setDoOutput(true);
			        InputStream in2= conn2.getInputStream();	        
			        DataInputStream dos2 = new DataInputStream(in2);
			        //in2.close();
			        //dos2.close();			        			        
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}		    	
		        Intent i=new Intent(context,Main.class);
		        i.putExtra("idUsuario", idUser);
			    startActivity(i);
		    }
		});

		Button botonR = (Button)item.findViewById(R.id.SolicitudRechazar);
		botonR.setOnClickListener(new OnClickListener() {
        	
		    public void onClick(View v) {
		    	
		    	//String id = String.valueOf(solicitudesA[position]);
		    	Toast.makeText(getBaseContext(), "rechazando grupo ", Toast.LENGTH_SHORT).show();
		    	
		    	try {
					URL ob2 = new URL(servletURL + "?Rechaza_SolGrupo="+idSolGrup[position]);
					URLConnection conn2 = ob2.openConnection();
					conn2.setDoInput(true);
			        conn2.setDoOutput(true);
			        InputStream in2= conn2.getInputStream();	        
			        DataInputStream dos2 = new DataInputStream(in2);
			        //in2.close();
			        //dos2.close();			        			        
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}		    	
		        Intent i=new Intent(context,Main.class);
		        i.putExtra("idUsuario", idUser);
			    startActivity(i);
		    }
		});
		
		} catch (Exception e){
			e.printStackTrace();
		}
		return(item);
	}
}


    static class ViewHolder {
    	ImageView foto;
    	TextView info;
    }
}